package Offer;

/**
 * @author lakersUp
 * @Classname  search
 * @Description     在排序数组中查找数字
 *      二分!, 重点在于确定最后的左右边界
 * @Date 2022/2/27 15:52
 * @Version 1.0
 */
public class Offer53search {
    public int search(int[] nums, int target) {
        int left=0;
        int right=nums.length-1;
        while(left<=right){
            int mid=(left+right)/2;
            if(nums[mid]>target){
                right=mid-1;
            }else {
                if(nums[mid]<target){
                    left=mid+1;
                }else {
                    // nums[mid]=target,边界分为三种情况考虑
                    if(nums[left]==nums[right]){
                        return right-left+1;
                    }
                    if(nums[left]<nums[mid]){
                        left++;
                    }
                    if(nums[right]>nums[mid]){
                        right--;
                    }
                }
            }
        }
        return 0;
    }
}
